package ar.com.ctrln.persistence.model.empleado;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import ar.com.ctrln.persistence.model.persona.AbstractPersona;
import ar.com.ctrln.persistence.model.persona.Direccion;
import ar.com.ctrln.persistence.model.persona.Especialidad;
import ar.com.ctrln.persistence.model.persona.Telefono;
import ar.com.ctrln.persistence.model.sistema.cuentas.Usuario;
/**
 * 
 * @author martin
 *
 */

@Entity
@Table(name = "EMPLEADO")
public class Empleado extends AbstractPersona {

	
	@Column
	private long legajo;

	@Column
	private String cuil;

	@Column
	private Date fechaIngreso;

	@Column
	private Date fechaEgreso;

	@OneToOne
	@JoinColumn(name="id_usuario")
	private Usuario usuario;
	
	@OneToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "DIRECCIONES_EMPLEADO", joinColumns = { @JoinColumn(name = "id_persona") }, inverseJoinColumns = { @JoinColumn(name = "id_direccion") })
	private Set<Direccion> direcciones;
	
	@OneToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "TELEFONOS_EMPLEADO", joinColumns = { @JoinColumn(name = "id_persona") }, inverseJoinColumns = { @JoinColumn(name = "id_telefono") })
	private Set<Telefono> telefonos;

	@OneToOne
	@JoinColumn(name="id_especialidad")
	private Especialidad especialidad;

	public long getLegajo() {
		return legajo;
	}

	public void setLegajo(long legajo) {
		this.legajo = legajo;
	}

	public String getCuil() {
		return cuil;
	}

	public void setCuil(String cuil) {
		this.cuil = cuil;
	}

	public Date getFechaIngreso() {
		return fechaIngreso;
	}

	public void setFechaIngreso(Date fechaIngreso) {
		this.fechaIngreso = fechaIngreso;
	}

	public Date getFechaEgreso() {
		return fechaEgreso;
	}


	public void setFechaEgreso(Date fechaEgreso) {
		this.fechaEgreso = fechaEgreso;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Especialidad getEspecialidad() {
		return especialidad;
	}

	public void setEspecialidad(Especialidad especialidad) {
		this.especialidad = especialidad;
	}

	@Override
	public Set<Direccion> getDirecciones() {
		return this.direcciones;
	}

	@Override
	public void setDirecciones(Set<Direccion> direcciones) {
		this.direcciones = direcciones;
	}

	@Override
	public void setTelefonos(Set<Telefono> telefonos) {
		this.telefonos = telefonos;
	}

	@Override
	public Set<Telefono> getTelefonos() {
		return this.telefonos;
	}

	
}